package data;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.Vector;

import model.Consorcio;
import model.Departamento;
import model.Propietario;

public class AdmPersistDepartamento {

	private static AdmPersistDepartamento instancia;
	
	private AdmPersistDepartamento(){
		
	}
	
	public static AdmPersistDepartamento getInstancia(){
		if (instancia == null)
			instancia = new AdmPersistDepartamento();
		return instancia;
	}
	
	public void insert(Object o){
		
	}
	
	public Departamento buscarDepartamento(int unidadFuncional, int nroConsorcio){
		try
		{
			Departamento a = null;
			Connection con = PoolConnection.getPoolConnection().getConnection();
			PreparedStatement s = con.prepareStatement("select nroPropietario,unidadFuncional,porcentaje,piso,letra,cocheras from seminario.dbo.Departamentos where unidadFuncional = ? and nroConsorcio = ?");
			s.setInt(1, unidadFuncional);
			s.setInt(2, nroConsorcio);
			ResultSet result = s.executeQuery();
			while (result.next())
			{
				int nroPropietario = result.getInt(1);
				int unidFuncional = result.getInt(2);
				float porcentaje = result.getFloat(3);
				int piso= result.getInt(4);
				String letra= result.getString(5);
				int cocheras= result.getInt(6);
				
				Propietario p = AdmPersistPropietario.getInstancia().buscarPropietario(nroPropietario);
				
				a = new Departamento(unidFuncional,porcentaje,letra,piso,p,cocheras);
			}
			PoolConnection.getPoolConnection().realeaseConnection(con);
			return a;
			
		}
		catch (Exception e)
		{
			System.out.println();
		}
		return null;
	}
	
	public Vector<Departamento> selectAll(Consorcio consorcio){
		try
		{
			Vector<Departamento>rta = new	Vector<Departamento>();
			Connection con = PoolConnection.getPoolConnection().getConnection();
			PreparedStatement s = con.prepareStatement(" select nroConsorcio,nroPropietario,unidadFuncional," +
					"porcentaje,piso,letra,cocheras from seminario.dbo.Departamentos where nroConsorcio = ?");
			s.setInt(1, consorcio.getNumero());
			ResultSet result = s.executeQuery();
			while (result.next()){
								
				int nroPropietario = result.getInt(2);
				int unidadFuncional = result.getInt(3);
				float porcentaje = result.getFloat(4);
				int piso = result.getInt(5);
				String letra = result.getString(6);
				int cocheras = result.getInt(7);	
				
				Propietario p = AdmPersistPropietario.getInstancia().buscarPropietario(nroPropietario);
				
				Departamento d = new Departamento(unidadFuncional, porcentaje, letra, piso, p, cocheras);
				rta.add(d);
				
			}
			PoolConnection.getPoolConnection().realeaseConnection(con);
			return rta;
			
			
		}catch (Exception e)
		{
			System.out.println("Error al leer la base de datos");
			System.out.println("Stack Trace al escribir la Base de datos: " + e.getStackTrace());
		}
		return null;
	}
	
}
